Multi-core processor architectures are becoming widely adopted in both server and client platforms. These multi-core architectures are designed to run multiple workloads simultaneously on different hardware threads. Operating systems in multi-core processor based systems make scheduling decisions independent of hardware considerations since most multi-core or multiprocessor systems are homogenous. However, the industry is moving toward more variability between different cores in a single system. Significant performance penalties may be paid if threads are scheduled independently of any hardware considerations among cores.